/*
 * @Author: HeAo
 * @Date: 2022-08-18 20:14:11
 * @LastEditTime: 2022-08-19 17:00:43
 * @LastEditors: HeAo
 * @Description: 
 * @FilePath: \JavaScripe\day-09\07-组合模式.js
 * 别乱动！
 */
// 在构造函数中 定义一些不需要共享的属性
function Person(name, age, friends) {
  this.name = name,
    this.age = age,
    this.friends = friends
}
// 将要共享的参数或方法定义在原型上  Person.prototype中的constructor会指向Object构造函数
Person.prototype = {
  sayName() {
    console.log(this.name);
  }
}
// 改变Person.prototype中的constructor会指向Person构造函数 其实constructor并不会影响p1、p2的读取数据
Object.defineProperty(Person.prototype, 'constructor', {
  enumerable: false,
  value: Person
})
var p1 = new Person('terry', 38, ['larry', 'zhaoliu'])
var p2 = new Person('zhangsan', 40)
console.log(p1, p2); //
console.log(p1.sayName === p2.sayName); //true
console.log(p1.constructor === Person); //true
console.log(p1.constructor === Object); //false